import axios from 'axios';
import router from '@/router/index'
const http = axios.create({
    // baseURL: 'http://localhost:8000/api',
    baseURL: 'http://localhost:8077/api',
    timeout: 120000
});

// 请求拦截器
http.interceptors.request.use(config => {
    // 可以在这里添加token等公共请求头
    const token = localStorage.getItem('token')
    if (token) {
        config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
}, error => {
    return Promise.reject(error);
});

// 响应拦截器
http.interceptors.response.use(response => {
    const requestUrl = response.config.url;
    // 判断是否是上传附件的请求，如果请求url中包含"upload"字样（可按实际情况替换此标识）则直接返回响应，不进行业务错误判断等处理
    if (requestUrl && requestUrl.includes('upload')) {
        if(response.data.code === 400){
            console.error('未授权或已过期，请重新登录')
            router.push('/')
        }
        return response;
    }
    if (requestUrl && requestUrl.includes('register')) {
        return response;
    }
    if(response.data.code !== 1){
        const error = new Error('Response code is not 1');
        if (response.data.code ===500){
            router.go(-1)
        }else if(response.data.code === -1){
            return response;
        }else{
            router.push('/')
        }
    }
    return response
}, error => {
    console.info("错误处理")
    // 错误处理
    const status = error.response?.status
    switch (status) {
        case 400:
            // 处理未授权错误
            console.error('未授权或已过期，请重新登录')
            router.push('/')
            break
        case 401:
            // 处理未授权错误
            console.error('未授权或已过期，请重新登录')
            router.push('/')
            break
        case 403:
            console.error('权限不足')
            break
        case 500:
            console.error('服务器错误')
            break
        default:
            console.error('未知错误')
            // router.push('/')
    }
    return Promise.reject(error)
});

export default http;